LOS TRIGGERS O DISPARADORES




Son objetos de la base de datos que ejecutan acciones cuando se producen ciertos eventos (tanto DML como DDL) (inserciones, modificaciones, borrados, creación de tablas, etc).

SEGUN LA BASE DE DATOS DE LA FABRICA EN ANTERIORES PAGINAS HEMOS CREADO

EJEMPLO:

1. insertar un pedido de algún producto cuando la cantidad de éste, en nuestro factura, sea inferior a un valor dado.


BEFORE UPDATE ON facturas
FOR ALL records
IF :NEW.productos < 100 THEN
INSERT INTO facturas_productos(productos) VALUES ('3');
END IF;
SELECT facturas_productos.cantidad.
END

2.
Los Dispararores tienen dos palabras clave, OLD y NEW que se refieren a los valores que tienen las columnas antes y después de la modificación. Los INSERT permiten NEW, los DELETE sólo OLD y los UPDATE ambas.

ejemplo

CREATE TABLE clientes (
id int not null auto_increment,
nombre varchar(100),
seccion varchar(10),
PRIMARY KEY(id), KEY(nombre) )
ENGINE = InnoDB;

CREATE TABLE auditoria_clientes (
id int not null auto_increment,
nombre varchar(100),
anterior_seccion varchar(10),
usuario varchar(40),
modificado datetime,
primary key(id)
) ENGINE = InnoDB;

CREATE TRIGGER trigger_auditoria_clientes AFTER UPDATE ON clientes
FOR EACH ROW
INSERT INTO auditoria_clientes(name, anterior_seccion, usuario, modificado )
VALUES (OLD.nombre, OLD.seccion, CURRENT_USER(), NOW() );
CREATE TRIGGER trigger_auditoria_usuarios AFTER UPDATE ON usuarios
FOR EACH ROW
INSERT INTO auditoria_usuarios(Nombre_usuario, Anterior_pass, Usuario, Modificado )
VALUES (OLD.Nombre_usuario, OLD.Pass, CURRENT_USER(), NOW() );